const { http } = require('../../../utils/http'); 
import {
  getCurrentUser
} from '../../../utils/userManager';
Page({
  data: {
    // 单独定义的 tab 数据列表
    tabList: [
      { id: 1, name: '物理' },
      { id: 2, name: '科学' },
      { id: 3, name: '化学' },
      { id: 4, name: '生物学' },
      { id: 5, name: '数学' },
      { id: 6, name: '政治' },
      { id: 7, name: '文学' }
    ],
    currentTabId: 1, // 默认选中的 tab id
    list: [], 
    checkedMap: {}, 
    selectedCategoryName: '物理',
    // 分页相关参数
    page: 1,         // 当前页码
    pageSize: 10,    // 每页条数
    hasMore: true,   // 是否还有更多数据
    loading: false   // 加载状态
  },

  // tab 点击事件
  onTabTap: function(e) {
    const tabId = e.currentTarget.dataset.id;
    // 找到当前点击的tab对应的name
    const currentTab = this.data.tabList.find(tab => tab.id === tabId);
    
    this.setData({
      currentTabId: tabId,
      selectedCategoryName: currentTab.name,
      // 切换分类时重置分页
      page: 1,
      hasMore: true,
      list: []
    }, () => {
      console.log('科目'+this.data.selectedCategoryName)
      // 数据更新完成后重新加载列表
      this.getFavoriteList();
    });
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.getFavoriteList();
  },

  /**
   * 获取收藏列表数据
   */
  getFavoriteList() {
    this.setData({ loading: true });
    wx.showLoading({ title: '加载中...' });

    // 构建请求参数
    const params = {
      userId: getCurrentUser().userInfo.userId,
      'subject.name': this.data.selectedCategoryName,
      pageNum: this.data.page,
      pageSize: this.data.pageSize
    };

    // 调用收藏列表接口
    http.get('/wjq/favoritequestion/list', params)
      .then(res => {
        if (res.code === 200) {
          const favoriteListData = res.rows || [];
          // 处理分页数据拼接
          let newList = this.data.list;
          if (this.data.page === 1) {
            newList = favoriteListData;
          } else {
            newList = newList.concat(favoriteListData);
          }
          
          // 更新选中状态映射，保留已有选中状态
          const newCheckedMap = { ...this.data.checkedMap };
          favoriteListData.forEach(item => {
            // 如果是新数据且未设置过选中状态，则默认设为未选中
            if (newCheckedMap[item.id] === undefined) {
              newCheckedMap[item.id] = false;
            }
          });
          
          this.setData({
            list: newList,
            favoriteCount: newList.length,
            checkedMap: newCheckedMap,
            // 判断是否还有更多数据
            hasMore: newList.length < res.total
          });
          console.log('收藏列表数据:', this.data.list);
        } else {
          wx.showToast({ title: res.msg || '获取收藏失败', icon: 'none' });
        }
      })
      .catch(err => {
        console.error('获取收藏列表失败:', err);
        wx.showToast({ title: '网络异常', icon: 'none' });
      })
      .finally(() => {
        this.setData({ loading: false });
        wx.hideLoading();
      });
  },

  // 单独选中/取消选中复选框
  onCheckOnly(e) {
    const itemId = e.currentTarget.dataset.id;
    const { checkedMap } = this.data;
    
    const newCheckedMap = { ...checkedMap };
    newCheckedMap[itemId] = !newCheckedMap[itemId];
    
    this.setData({
      checkedMap: newCheckedMap
    });
  },

  // 全选/取消全选
  onToggleAll() {
    const { list, checkedMap } = this.data;
    const isAllChecked = list.every(item => checkedMap[item.id]);
    
    const newCheckedMap = list.reduce((map, item) => {
      map[item.id] = !isAllChecked;
      return map;
    }, {});
    
    this.setData({
      checkedMap: newCheckedMap
    });
  },

  // 删除选中的收藏
  onDelete() {
    const { checkedMap, list } = this.data;
    const selectedIds = list
      .filter(item => checkedMap[item.id])
      .map(item => item.id);
    
    if (selectedIds.length === 0) {
      wx.showToast({
        title: '请选择要删除的项',
        icon: 'none'
      });
      return;
    }
    
    wx.showModal({
      title: '提示',
      content: `确定要删除选中的 ${selectedIds.length} 项收藏吗？`,
      confirmText: '删除',
      confirmColor: '#f37b1d',
      success: (res) => {
        if (res.confirm) {
          const idsStr = selectedIds.join(',');
          http.delete(`/wjq/favoritequestion/${idsStr}`)
            .then(res => {
              if (res.code === 200) {
                wx.showToast({ title: '删除成功' });
                // 重新加载列表，从第一页开始
                this.setData({
                  page: 1,
                  hasMore: true
                }, () => {
                  this.getFavoriteList();
                });
              } else {
                wx.showToast({ title: res.msg || '删除失败', icon: 'none' });
              }
            })
            .catch(err => {
              console.error('删除失败:', err);
              wx.showToast({ title: '网络异常', icon: 'none' });
            });
        }
      }
    });
  },

  /**
   * 立即学习功能
   */
  onQuestionTap(e) {
    const itemId = e.currentTarget.dataset.id;
    const selectedItem = this.data.list.find(item => item.id === itemId);
    
    if (!selectedItem) {
      wx.showToast({ title: '未找到题目数据', icon: 'none' });
      return;
    }

    this.goToChapterPractice([selectedItem]);
  },

  // 批量学习
  onStudy() {
    const { checkedMap, list } = this.data;
    const selectedItems = list.filter(item => checkedMap[item.id]);
    
    if (selectedItems.length === 0) {
      wx.showToast({ title: '请选择要学习的题目', icon: 'none' });
      return;
    }

    if (selectedItems.length === 1) {
      this.goToChapterPractice([selectedItems[0]]);
      return;
    }

    wx.showModal({
      title: '学习提示',
      content: `您选择了 ${selectedItems.length} 道题目，将从第一题开始学习`,
      confirmText: '开始学习',
      confirmColor: '#2d8cf0',
      success: (res) => {
        if (res.confirm) {
          this.goToChapterPractice(selectedItems);
        }
      }
    });
  },

  goToChapterPractice(items) {
    console.log('跳转学习题目:', items);

    const questionIds = items.map(item => item.question?.id || item.id);
    const params = {
      questionId: questionIds[0],
      from: 'favorite',
      subjectName: items[0].subject?.name || this.data.selectedCategoryName
    };

    const url = `/index/pages/questionAnalysis/questionAnalysis?questionId=${params.questionId}&from=${params.from}&subjectName=${params.subjectName}`;

    wx.navigateTo({
      url,
      success: () => {
        console.log('跳转题目解析页面成功');
        wx.showToast({
          title: '开始学习',
          icon: 'success'
        });
      },
      fail: (err) => {
        console.error('跳转题目解析页面失败:', err);
        wx.showToast({
          title: '跳转失败',
          icon: 'none'
        });
      }
    });
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    // 如果还有更多数据且不在加载中，加载下一页
    if (this.data.hasMore && !this.data.loading) {
      wx.showToast({
        title: '加载更多...',
        icon: 'none',
        duration: 800
      });
      this.setData({
        page: this.data.page + 1
      }, () => {
        this.getFavoriteList();
      });
    } else if (!this.data.hasMore) {
      // 没有更多数据时的提示
      wx.showToast({
        title: '已加载全部数据',
        icon: 'none',
        duration: 1000
      });
    }
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    // 下拉刷新时重置分页，重新加载数据
    this.setData({
      page: 1,
      hasMore: true
    }, () => {
      this.getFavoriteList().then(() => {
        wx.stopPullDownRefresh();
      });
    });
  }
});
